Efficient input/output (I/O) processing is an ever-increasing challenge, and strides are continuously being made towards improving efficiency. As one example, in order to achieve considerably higher bandwidths than previously allowed, an enhanced input/output architecture, referred to as the queued direct input/output (QDIO) architecture, has been designed by International Business Machines Corporation. This architecture is exploited in various systems and products, including the zSeries systems (e.g., z900) and the z/VM operating system products offered by International Business Machines Corporation. These systems and products have been enhanced to allow multiple operating system images, operating under host (e.g., z/VM) control, to perform queued direct I/O operations using TCP/IP communications adapters and Fibre Channel Protocol (FCP) adapters.
Currently, use of the QDIO architecture by guest operating systems executing in pageable mode virtual machines requires extensive overhead by the host. For instance, the host needs to create and maintain shadow QDIO data queues, which mirror the QDIO actions taken against the guest operating system created QDIO queues used to access the network or I/O devices attached to the QDIO adapters. This QDIO shadowing/mirroring requirement exists due to the intrinsic manner by which the host virtualizes guest operating system real memory addresses and transparently shares the system's real memory pages among the guest virtual machines in which each of the operating systems execute.
Specifically, the guest operating systems use virtualized real memory for the QDIO queues. However, the adapters only access host real memory locations and not the virtualized guest real memory locations. This is because the adapter does not have a dynamic address translation mechanism, like the central processing units. Thus, the virtualized real memory used for QDIO queues by a guest operating system is transparently mapped by the host into different memory pages in actual or physical memory. Therefore, the hypervisor must perform various actions in order to allow guest operating systems to use QDIO adapters.
First, it must mirror the QDIO queues created by the guest operating system in guest real memory, by creating shadow copies of the guest QDIO queues in host real memory. These shadow queues are transparently created and maintained by the host, and are in turn, implicitly used by the guest to access the QDIO adapters. Only the shadow queues are connected to a QDIO adapter and only the host real memory I/O data area addresses contained in the QDIO shadow queues are actually used to transfer data to/from the adapter and main memory.
Further, the host must keep each guest created QDIO queue in synchronism with its corresponding host created shadow QDIO queue that is used by the QDIO adapter to perform the guest operating system specified QDIO operations. In particular, all of the QDIO state information in the guest QDIO queues in guest real memory must be kept in synchronism with the state information in the corresponding host shadow QDIO queues in host real memory; and the operating system specified guest real memory I/O data area addresses in the guest QDIO queues must be assigned corresponding host real memory data areas by the host and these data area addresses must then be specified in the host created shadow queues used by the adapter.
This process of shadowing and maintaining synchronization requires that the host take control of the central processor each time a guest operating system executes a QDIO operation. Further, the processing cycles associated with the transfer of control from/to the guest operating system and the host each time the guest performs a QDIO operation significantly increases the total processor overhead required for QDIO processing over that which is necessary when the operating system is executing in a native machine environment. This additional processing overhead can contribute to as much as a 40% increase in the total processing cycles required to run a workload as a pageable guest, as compared to executing it natively.
Based on the foregoing, a need exists for a capability that enhances input/output processing. For example, a need exists for a capability that reduces the host processing overhead associated with performing I/O operations, such as QDIO operations.